define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

  var Controller = {
    index: function () {
      // 初始化表格参数配置
      Table.api.init({
        extend: {
          index_url: 'user/user/index',
          add_url: 'user/user/add',
          edit_url: 'user/user/edit',
          del_url: 'user/user/del',
          multi_url: 'user/user/multi',
          table: 'user',
        }
      });

      var table = $("#table");

      // 初始化表格
      table.bootstrapTable({
        url: $.fn.bootstrapTable.defaults.extend.index_url,
        pk: 'id',
        sortName: 'user.id',
        fixedColumns: true,
        fixedRightNumber: 1,
        columns: [
          [
            {checkbox: true},
            {field: 'id', title: __('Id'), sortable: true},
            {field: 'group.name', title: __('Group')},
            {field: 'username', title: __('Username'), operate: 'LIKE'},
            {field: 'nickname', title: __('Nickname'), operate: 'LIKE'},
            {field: 'email', title: __('Email'), operate: 'LIKE'},
            {field: 'mobile', title: __('Mobile'), operate: 'LIKE'},
            {
              field: 'avatar',
              title: __('Avatar'),
              events: Table.api.events.image,
              formatter: Table.api.formatter.image,
              operate: false
            },
            {field: 'level', title: __('Level'), operate: 'BETWEEN', sortable: true},
            {field: 'gender', title: __('Gender'), visible: false, searchList: {1: __('Male'), 0: __('Female')}},
            {field: 'score', title: __('Score'), operate: 'BETWEEN', sortable: true},
            {field: 'successions', title: __('Successions'), visible: false, operate: 'BETWEEN', sortable: true},
            {field: 'maxsuccessions', title: __('Maxsuccessions'), visible: false, operate: 'BETWEEN', sortable: true},
            {
              field: 'logintime',
              title: __('Logintime'),
              formatter: Table.api.formatter.datetime,
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true
            },
            {field: 'loginip', title: __('Loginip'), formatter: Table.api.formatter.search},
            {
              field: 'jointime',
              title: __('Jointime'),
              formatter: Table.api.formatter.datetime,
              operate: 'RANGE',
              addclass: 'datetimerange',
              sortable: true
            },
            {field: 'joinip', title: __('Joinip'), formatter: Table.api.formatter.search},
            {
              field: 'status',
              title: __('Status'),
              formatter: Table.api.formatter.status,
              searchList: {normal: __('Normal'), hidden: __('Hidden')}
            },
            {
              field: 'company', title: '认证状态', formatter: function (value, index, item) {
                let html = '';
                html = value != null ? '<span style="color: #EE5757">已认证</span>' : '未认证或者非认证';
                return html;
              }
            },
            // {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
            //操作栏,默认有编辑、删除或排序按钮,可自定义配置buttons来扩展按钮
            {
              field: 'operate',
              title: __('Operate'),
              table: table,
              events: Table.api.events.operate,
              formatter: Table.api.formatter.operate,
              buttons: [
                {
                  name: 'detail',
                  title: "企业信息",
                  classname: 'btn btn-info btn-xs btn-dialog',
                  icon: 'fa fa-plus',
                  url: 'company/detail/source/users',
                },
              ],

            },
          ]
        ]
      });

      // 为表格绑定事件
      // 为表格绑定事件
      Table.api.bindevent(table);
    },
    add: function () {
      Controller.api.bindevent();
    },
    edit: function () {
      Controller.api.bindevent();
    },
    detail: function () {
          Controller.api.bindevent();
      },
    api: {
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      }
    }
  };
  return Controller;
});
